从C++文件中读取不同类型的变量
Reading different types of variables from a file in C++
我在C++中的代码有问题,需要一些帮助。有一些相关的问题,但我无法真正理解答案。我有一个文本文件(下面的示例中的"参数.dat"),我想用C++编写的代码来读取它。该文件包括不同类型的变量:布尔值,双精度和整数以及一些我想在阅读时跳过的注释。我的文件看起来像这样:
150 // this is an integer
4e-1 // this is a double
1.05 // another double
0 // this is a logical (Boolean) variable: 0 is false and 1 is true
我使用的代码的简单版本是
int N;
double var_1, var_2;
bool inital;
ifstream read_parameters;
read_parameters.open("parameters.dat");
read_parameters >> N >> var_1 >> var_2 >> initial;
read_parameters.close();
注释似乎毁了一切,即使没有它们,正确阅读逻辑变量似乎也存在一些问题。我尝试读取的文件是由我制作的,因此如有必要,我可以用其他内容替换上面的"//"。有人有什么建议吗?
提前感谢!
简单、俗气的方式:
读取令牌,然后read_parameters.ignore(numeric_limits<streamsize>::max(), 'n')
丢弃该行的其余部分。 例如:
read_parameters >> N;
read_parameters.ignore(numeric_limits<streamsize>::max(), 'n');
read_parameters >> var_1;
read_parameters.ignore(numeric_limits<streamsize>::max(), 'n');
...
这并不关心注释是否存在,但如果一行上有两个或多个标记,则需要修改。
哦,记得在阅读后测试流的状态。为其中一个替身插入"fubar"目前会毁掉一切。 read_parameters
将处于错误状态,需要清除该状态,然后才能再次读取。
if (!read_parameters >> N)
{
std::cerr << "bad input for parameter N" << std::endl;
read_parameters.clear();
}
read_parameters.ignore(numeric_limits<streamsize>::max(), 'n');
更好,但您可能希望使用比打印行更好的方法处理错误。
在
动态字符数组中输入,然后运行一个 for 循环,其中如果一个字符具有 ascii 65 - 97 - 以后,那么它将是字母表,否则如果 ascii 表示像 1,2,3 这样的整数,然后在计算总整数为 count++ 后将它们分隔到另一个数组中。
相关文章:
- 从模板创建通用打印函数,以打印基元数据类型变量的值
- 指针数据类型变量如何包含对象?
- 将 static_cast<int>(-15) 分配给静态常量字符类型变量
- 将内置类型变量传递给只有一个类类型参数的"+"运算符函数时自动类型转换的构造函数
- 如何为结构类型变量赋值
- 如何将字符类型变量附加到字符串中?
- 共享或私有 openmp 代码中的结构化类型变量
- 有没有办法在 c++ 中制作类型变量?
- 从其他类声明类类型变量会给出 C2143 错误(在"*"之前缺少";")
- 如何检查类中定义的枚举类型变量是否被分配给?
- 将子类实例保存在父类型变量中并通过父变量使用 Child 函数?
- 是否可以在没有结构的情况下创建新的类型变量?
- 为什么类型变量;不调用默认 CTR
- 如何使用CIN将输入整数值获取到char类型变量中
- 如何为 char** 类型变量提供适当的值,以便将其分配给字符串变量
- 在C++标准中哪里说必须初始化 const 内置类型变量的定义
- 为什么可以将其他类型变量用作C 中常量参考参数参数的参数
- Eclipse CDT 打开声明的自动类型变量
- 如何计算长长类型变量中的位数
- 将自动类型变量初始化为零.这种类型安全吗?