如何使用 C++ 将字符串文件 Txt 解析为数组

2023-12-02

我正在尝试编写一个C++程序,但我对C++不熟悉。我有一个.txt文件,其中包含值如下:

0
0.0146484
0.0292969
0.0439453
0.0585938
0.0732422
0.0878906

我在 C++ 代码中所做的事情如下:

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    string line;
    ifstream myReadFile;
    myReadFile.open("Qi.txt");
    if(myReadFile.is_open())
    {
        while(myReadFile.good())
        {
            getline(myReadFile,line);
            cout << line << endl;
        }
        myReadFile.close();
    }
    return 0;
}

我想让程序的输出成为一个数组,即

line[0] = 0
line[1] = 0.0146484
line[2] = 0.0292969
line[3] = 0.0439453
line[4] = 0.0585938
line[5] = 0.0732422
line[6] = 0.0878906

假设您希望将数据存储为浮点数(而不是字符串),您可能需要执行以下操作:

#include <iostream>
#include <vector>
#include <iterator>
#include <fstream>

int main() { 
    std::ifstream in("Qi.txt");

    // initialize the vector from the values in the file:
    std::vector<double> lines{ std::istream_iterator<double>(in),
                               std::istream_iterator<double>() };

    // Display the values:
    for (int i=0; i<lines.size(); i++)
         std::cout << "lines[" << i << "] = " << lines[i] << '\n';
}

关于样式的简单说明:我更喜欢在创建变量时看到变量完全初始化,所以std::ifstream in("Qi.txt");优于std::ifstream in; in.open("Qi.txt");。同样,最好直接从 istream 迭代器初始化行向量,而不是创建一个空向量,然后将其填充到显式循环中。

最后,请注意,如果您坚持编写显式循环,那么您never想要使用类似的东西while (somestream.good()) or while (!somestream.eof())控制你的循环——这些大部分都被破坏了,所以它们不能(可靠地)正确地读取文件。根据所涉及的数据类型,他们经常会从文件中读取最后一项两次。通常,你想要类似的东西while (file >> value) or while (std::getline(file, somestring))。这些在读取后立即检查文件的状态,因此一旦读取失败,它们就会退出循环,避免了问题while (good()) style.

哦,顺便说一句:这是编写的,期望编译器(至少在某种程度上)符合 C++11。对于较旧的编译器,您需要更改此设置:

    // initialize the vector from the values in the file:
    std::vector<double> lines{ std::istream_iterator<double>(in),
                               std::istream_iterator<double>() };

...这样的事情:

    // initialize the vector from the values in the file:
    std::vector<double> lines(( std::istream_iterator<double>(in)),
                                std::istream_iterator<double>() );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 C++ 将字符串文件 Txt 解析为数组 的相关文章

  • 将 new 与 decltype 一起使用

    T t T is an implementation detail t new T want to avoid naming T to allow for flexibility t new decltype t error cannot
  • Poco c++Net:Http 从响应中获取标头

    我使用 POCO C Net 库进行 http 我想尝试制定持久缓存策略 首先 我认为我需要从缓存标头中获取过期时间 并与缓存值进行交叉检查 如果我错了 请告诉我 那么我如何从中提取缓存头httpResponse 我已经看到你可以用 Jav
  • 在 Java 中创建 T 的新实例

    在C 中 我们可以定义一个泛型class A
  • linq 中使用字符串数组 c# 的 'orderby'

    假设我有一个这样的方法定义 public CustomerOrderData GetCustomerOrderData string CustomerIDs var query from a in db Customer join b in
  • 在 C# 中调用 C++ 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有很多用 C 编写的库 我想从 C 调用这些库 但是 我遇到了很多问题 我想知道是否有书籍或指南告诉我如何做到这一点 Dll导入 htt
  • 将表(行)与 OpenXML SDK 2.5 保持在一起

    我想在 Word 文档中生成多个表 每行 2 行 但我想将这两行保留在一起 如果可能的话 new KeepNext 第一行不起作用 new KeepNext 第一行的最后一段不起作用 new CantSplit 放在桌子上不起作用 在所有情
  • 使用 LINQ 更新 IEnumerable 对象的简单方法

    假设我有一个这样的业务对象 class Employee public string name public int id public string desgination public int grade List
  • 访问 ascx 文件中的母版页控件

    我有一个母版页文件 其中包含 2 个面板控件中的 2 个菜单 我还使用控件来检查用户是否登录并获取用户类型 根据我想要显示 隐藏面板的类型 控件本身不在母版页中引用 而是通过 CMS 系统动态引用 我想在用户控件中使用findcontrol
  • MFC:如何设置CEdit框的焦点?

    我正在开发我的第一个简单的 MFC 项目 但我正在努力解决一个问题 想要设置所有的焦点CEdit其中一个对话框中的框 我的想法是 当打开对话框时 焦点位于第一个编辑框上 然后使用 选项卡 在它们之间交换 我看到了方法SetFocus 但我无
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • 使用具有抗锯齿功能的 C# 更改抗锯齿图像的背景颜色

    我有一个图像需要更改背景颜色 例如 将下面示例图像的背景更改为蓝色 然而 图像是抗锯齿的 所以我不能简单地用不同的颜色替换背景颜色 我尝试过的一种方法是创建第二个图像 仅作为背景 并更改其颜色并将两个图像合并为一个图像 但是这不起作用 因为
  • 如何从 Rx Subscribe 回调异步函数?

    我想回调 Rx 订阅中的异步函数 例如 像那样 public class Consumer private readonly Service service new Service public ReplaySubject
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • ASP.NET MVC 路由:如何从 URL 中省略“索引”

    我有一个名为 StuffController 的控制器 具有无参数索引操作 我希望从表单中的 URL 调用此操作mysite com stuff 我的控制器定义为 public class StuffController BaseContr
  • .NET 4 的条件编译[重复]

    这个问题在这里已经有答案了 可能的重复 条件编译和框架目标 https stackoverflow com questions 2923210 c sharp conditional compilation and framework ta
  • 在 C#.NET 中安全删除文件

    在我正在做的一个项目中 我想为用户提供 安全 删除文件的选项 例如 用随机位或 0 覆盖它 在 C NET 中是否有一种简单的方法可以做到这一点 效果如何 你可以调用系统内部删除 http technet microsoft com en
  • 如何在 winforms 应用程序的主屏幕显示之前显示欢迎屏幕?

    我想在应用程序启动时加载欢迎屏幕 然后用户单击欢迎屏幕上的按钮 然后关闭欢迎屏幕 最后显示主屏幕 static void Main startup method being called Application EnableVisualSt
  • 如何得知客户端从服务器的下载速度?

    根据客户的下载速度 我想以低质量或高质量显示视频 任何 Javascript 或 C 解决方案都是可以接受的 Thanks 没有任何办法可以确定 您只能测量向客户端发送数据的速度 如果没有来自客户端的任何类型的输入来表明其获取信息的速度 您
  • DataContractSerializer 事件/委托字段问题

    在我的 WPF 应用程序中 我正在使用DataContractSerializer序列化对象 我发现它无法序列化具有事件或委托声明的类型 考虑以下失败的代码 Serializable public abstract class BaseCl
  • 结构化绑定的用例有哪些?

    C 17 标准引入了新的结构化绑定 http en cppreference com w cpp language structured binding功能 最初是proposed http www open std org jtc1 sc

随机推荐

  • Android 中基于一个手柄旋转和缩放视图

    我正在尝试根据 Android 中的一个 拖动 手柄来旋转和缩放视图 随着布局旋转和视图大小调整 最终结果应该是拖动手柄跟随用户手指移动 这是基于结合这两个问题 如何使用手柄在android中缩放视图 在android中绕两点旋转不起作用
  • 使用 htaccess 将页面从一个页面重定向到另一个页面而不更改 url

    有没有办法在 joomla 中使用 htaccess 将页面从一个页面重定向到另一个页面而不更改 url 我想更改网址 http idaycom com index php component quates to http idaycom
  • 如何在 julia 中将 Array{Array{Float64, 1}, 1} 转换为矩阵?

    假设我有这样的输入 gt 0 8681299566762923 0 3472589826095631 3 2300860990307445 3 3731249077464946 如何将其转换为更令人愉快的类型 例如矩阵 已知尺寸 您可以使用
  • 如何在旧版本的 Android 上使用 ActionBar? [复制]

    这个问题在这里已经有答案了 可能的重复 早期 sdk 版本中的 ActionBar 相当于什么 如果我没记错的话 Android 指南说您应该使用 ActionBar 在应用程序内进行全局导航 但与此同时 您通常希望以尽可能最旧的 API
  • 防止静态块的继承

    如果我们运行派生类 它将打印派生类和父类 有什么方法可以防止静态块的继承吗 1类 public class parent static System out println Parent Class2 public class derive
  • Akka 流:读取多个文件

    我有一个文件列表 我想 将所有这些作为单一来源进行阅读 文件应该按顺序 按顺序读取 无循环赛 任何时候都不应要求任何文件完全位于内存中 从文件读取错误应该会崩溃流 感觉这应该可行 Scala akka streams v2 4 7 val
  • .gitattributes 合并驱动程序未使用

    首先我知道这个问题如何告诉 git 始终选择本地版本来进行特定文件上的冲突合并 但这篇文章对我没有帮助 而且由于我的声誉 我无法添加任何评论 http git scm com book en Customizing Git Git Attr
  • 允许特殊字符,但只有特殊字符时不允许

    假设我有这个 a zA Z0 9 允许使用字母数字字母和一些特殊字符 逗号 点 破折号等 一次或多次 但现在 我只想在还有字母数字字母时允许使用这些特殊字符 a b c ok a ok 不好 不好 我尝试了一些方法 但仍然无法找到一种方法
  • iOS13 UIAlertController 具有自定义视图和首选样式作为操作表灰度所有颜色

    我不确定这是一个错误还是一个功能 但是这段代码 let sheet UIAlertController customView awesomeView preferredStyle actionSheet present sheet anim
  • 如何编辑 .fig 文件中保存的图形的属性而不显示它

    我想编辑保存为 fig MATLAB 的默认格式 文件的 MATLAB 图形的某个属性 我在脚本中创建了很多图形密集型图形 因此我选择通过使默认图形不可见来不显示它们set 0 DefaultFigureVisible off 这设置了 V
  • C# 中的 UDPclient 速率控制

    我连续发送多个 udp 数据包到远程电脑 问题是 如果数据量太大 通道之间的某些设备会遇到缓冲区溢出 我打算限制 节流 控制 udp 数据包的发送速率 有人可以给我一些关于如何找到最佳速率发送间隔的指导吗 顺便说一句 请停止建议使用 tcp
  • Java 可选 orElseThrow 与空集合

    我正在实现一个使用集合的流Foo列表获取该列表中所有项目的 id 并使用它们获取 Bar 实例的值 我想确保这个方法会抛出资源未找到异常如果栏列表上没有项目 尽管在当前状态下它会检查列表栏是否为空 但它不是 因为它包含一个空列表 您能帮我并
  • 了解 mysql 元组搜索的性能影响

    我正在研究这样的表结构 emp data id dept id emp id emp name role 1 101 1001 Tom Good Worker 2 101 1002 Dick Smart Worker 3 102 1001
  • rJava 在 macOS 10.14 上安装失败

    升级到 MacOS Mojave 10 14 1 后 我无法再安装rJava适用于安装了 Java 版本 1 8 0 102 的 R 版本 3 5 1 我尝试过MacOS 10 11 的先前解决方案但它仍然不起作用 给出了这个错误 Erro
  • SED:在匹配之前寻址两行

    打印行 位于匹配 模式 之前 2 行 我接下来尝试 sed n loop h x n n cen p s c p t x s n c p t loop g p datafile 剧本 sed n 1N 2N XXX n P N D 工作原理
  • 强制 Win32 通用控件在“ID2D1HwndRenderTarget”上绘制?

    我的大部分 UI 都是用ID2D1HwndRenderTarget 但我想要一些经典的窗口控件 button edit How to ID2D1HwndRenderTarget canvas nullptr it s global obje
  • 如何在Android EditText上实现DoubleClick?

    我有一个 活动 1 其中有一个 EditText 当用户双击 EditText 时 我想打开另一个活动 Activity 2 用这个 final GestureDetector gestureDetector new GestureDete
  • 我的条形图未显示所有数据值的条形图

    我有一个包含两个功能的 DataFrame 即LotFrontage and LotArea 我想绘制一个条形图来显示它们之间的关系 我的代码是 import matplotlib pyplot as plt visual df pd Da
  • 可以 svn 导出并包含未版本控制的文件吗?

    我想从工作 svn 副本导出我的代码 同时包含所有未版本控制的文件 例如 我希望将上传的图像 配置文件等包含在导出中 我怎样才能实现这个目标 出口 是什么意思 你可以只使用cp r直接复制目录树 然后删除 svn 目录 find name
  • 如何使用 C++ 将字符串文件 Txt 解析为数组

    我正在尝试编写一个C 程序 但我对C 不熟悉 我有一个 txt文件 其中包含值如下 0 0 0146484 0 0292969 0 0439453 0 0585938 0 0732422 0 0878906 我在 C 代码中所做的事情如下