字符串和输入文件,从包含字符串的 txt 文件中分配多个变量值
Strings and input files, Assign several variables values from txt file that contains strings
我是C++编程新手,我不确定输入和输出流是如何工作的。我想拿一个 txt 文件,其中包含由分隔符 (': ') 分隔的字符串和字符来分配类成员变量。
到目前为止,我已经能够拥有一个每行包含一个双精度或整数的 txt 文件,并将它们分配给变量。目前我拥有:
当前"默认.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 文件是:
新的"默认.txt">
每个维度的数量:10
尺寸数:3
数字密度:0.80
初始温度:1.5
我希望将冒号后面的值分配给成员变量:
int Var1 = 10;
int Var2 = 3;
double Var3 = 0.80;
double Var4 = 1.5;
以及一些输出文本,指示以下任一变量的初始化:
"变速档 1 设置为 10">
或
"每个维度的数字是 10"。
我该怎么做?txt 文件将以相同的顺序包含所有值,尽管如果可能的话,将程序读取"每个维度的数字"作为第一个字符串以自动将 10 分配给 Var1 可能会很有用。
我猜第一步是以某种方式将其分成两个字符串,并以": "作为分隔符并将其存储在某个临时字符串数组变量中?我不确定读取行并将值存储在上面的代码中到底发生了什么。
我想了解文件流的实际工作原理。抱歉,格式不正确。
我不会给你写一些代码,因为你上面有一个,所以我将向你解释我将如何做到这一点/以及这些是如何工作的,并给你一些有用的链接。
使用std::getline(file_name,line)
阅读一行。getline()
有一个默认的分隔符n
.所以它将整行存储在变量line
中。
将getline()
返回的内容存储在字符串变量中后,使用std::find
查找":"
及其位置。它将返回一个size_t position
,将其与substr
和/或erase
函数一起使用,以使这两个部分位于不同的变量中。
与文本string var_text
的字符串变量将保持原样,但该值需要修改,因为您希望将其作为int
或double
需要修改。您必须先将string var_text
与所需的任何字符串进行比较。根据结果,您可以使用stringstream
将变量设置为int
或double
等
现在您已经有了所需的变量,您可以将其存储在适当的类成员中。
重复此操作,只要getline()
返回 1。
尝试更多类似的东西:
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
RandomObject::RandomObject() //The Default Constructor
{
std::ifstream my_file("Default.txt");
std::string line;
while (std::getline(my_file, line))
{
std::istringstream iss(line);
std::string name;
std::getline(iss, name, ':');
if (name == "Number Per Dimension") {
iss >> Var1; //Var1 is now an int with value 10
std::cout << name << " is " << Var1 << std::endl;
}
else if (name == "Number of Dimensions") {
iss >> Var2; //Var2 is now an int with value 3
std::cout << name << " is " << Var2 << std::endl;
}
else if (name == "Number Density") {
iss >> Var3; //Var3 is now double with value 0.80
std::cout << name << " is " << Var3 << std::endl;
}
else if (name == "Initial Temperature") {
iss >> Var4; //Var4 is now double with value 1.5
std::cout << name << " is " << Var4 << std::endl;
}
}
}
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 有没有办法从非C/C++文件中读取C++原始字符串文字的内容
- 如何打开并写入一个名称取自C++中字符串的文件
- 如何从二进制文件中读取字符串
- 如何在 c++ 中使用 getline 从文件中读取字符串?
- 将字符串与文件上的数据进行比较
- 用户输入字符串的文件附加问题..C++
- 如何从文件中读取两个字符串和数字数组,并将它们存储在对象向量中
- 如何使字符串出现在编译的二进制可执行文件的开头?
- 使用文件内容作为硬编码字符串
- 将文件复制到自定义位置,存在字符串转换问题
- 将二进制字符串/文件内容从 c++ 传递到节点 js
- 在字符串.h文件中调用函数而不带对象
- 将带有引号和逗号的字符串文件读入字符串数组
- 如何从字符串/文件中分离字符和整数
- 将字符串文件存储到动态数组中
- 如何用C++将字符串文件Txt解析成数组
- 如何用Boost::Spirit解析复杂的字符串文件
- 如何从C语言的第二行读取字符串文件
- 一个很好的性能替代PHP-字符串/文件操作