gpt4 book ai didi

c++ - 字符串和输入文件,从包含字符串的 txt 文件中分配几个变量值

转载 作者:行者123 更新时间:2023-11-28 05:07:05 25 4
gpt4 key购买 nike

我是 C++ 编程的新手,我不确定输入和输出流的工作原理。我想拿一个 txt 文件,其中包含由分隔符(':')分隔的字符串和字符,以分配类成员变量。

到目前为止,我已经能够拥有一个每行包含一个 double 或整数的 txt 文件,并将它们分配给变量。目前我有:

当前“Default.txt”

10

3

0.80

1.5

我目前用于变量赋值的代码:

#include <iostream>
#include <fstream>

RandomObject::RandomObject(){ //The Default Constructor

std::ifstream my_file;

my_file.open("Default.txt");

//Not sure if this the most effective way to do this...
if (my_file.is_open())
{
while (~my_file.eof())
{ my_file >> Var1; //Var1 is now an int with value 10
my_file >> Var2; //Var2 is now an int with value 3
my_file >> Var3; //Var3 is now double with value 0.80
my_file >> Var4; //Var4 is now double with value 1.5
break;
}

}
my_file.close();
}

现在我希望 txt 文件是:

新的“Default.txt”

Number Per Dimension: 10

Number of Dimensions: 3

Number Density: 0.80

Initial Temperature: 1.5

我想把冒号后面的值赋给一个成员变量:

int Var1 = 10;
int Var2 = 3;
double Var3 = 0.80;
double Var4 = 1.5;

和一些输出文本指示变量初始化:

"Variable 1 is set to 10"

"Number Per Dimension is 10".

我该怎么做呢? txt 文件将具有相同顺序的所有值,但如果可能的话,让程序读取“每个维度的数字”作为第一个字符串以自动将 10 分配给 Var1 可能很有用。

我猜第一步是以某种方式将其拆分为两个字符串,并以“:”作为分隔符并将其存储在某个临时字符串数组变量中?我不确定读取行并将值存储在上面的代码中到底发生了什么。

我想了解文件流的实际工作原理。抱歉,格式错误。

最佳答案

我不会给你写一些代码,因为你上面有代码,所以我会向你解释我将如何做/以及这些代码是如何工作的,并为你提供一些有用的链接。

使用 std::getline(file_name,line) 读取一行。 getline() 有一个默认的分隔符 \n。因此它将整行存储在变量 line 中。

getline() 返回的内容存储在字符串变量中,使用 std::find找到 ":" 及其位置。它将返回一个 size_t 位置,将其与 substr 一起使用和/或 erase函数将这两个部分放在不同的变量中。

字符串变量 string var_text 与你的文本将保持原样,但值因为你想要它作为 intdouble 需要修改.您必须首先将 string var_text 与您想要的任何字符串进行比较。根据结果​​,您可以使用 stringstream 将变量设置为 intdouble 等。

现在您已拥有所需形式的变量,您可以将其存储在适当的类成员中。

只要 getline() 返回 1,就重复此操作。

关于c++ - 字符串和输入文件,从包含字符串的 txt 文件中分配几个变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44445316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com