【发布时间】:2012-11-03 13:29:46
【问题描述】:
大家好,所以我必须从文本文件中获取值,但这些值并不是独立的,它们都是这样写的:
人口规模:30
在 C++ 中有什么方法可以在 ':' 之后读取吗? 我尝试过使用 >> 运算符,例如:
string pop;
inFile >> pop;
但当然,空格会在语句到达数字之前终止语句,并且出于某种原因使用
inFile.getline(pop, 20);
给了我很多错误,因为出于某种原因它不想直接写入字符串.. 我真的不想使用 char 数组,因为这样就不会那么容易测试数字并从字符串中单独提取它。 那么无论如何我可以将getline函数与字符串一起使用吗? 是否可以从 ':' 字符之后读取?
#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
#include <cstdlib>
using namespace std;
int main()
{
string fname;
cin >> fname;
ifstream inFile;
inFile.open(fname.c_str());
string pop1;
getline(inFile,pop1);
cout << pop1;
return 0;
}
好的,这是我使用新 getline 的代码,但它仍然没有输出任何内容。它确实正确打开了文本文件,并且可以使用 char 数组
【问题讨论】:
-
std::string的getline版本不是输入流的成员:std::getline(inFile, pop)。 -
感谢您的帮助,此语句不会导致任何错误,但是当我使用 cout 时它不会输出任何内容
-
失败的唯一原因是如果 1) 您输入了错误的文件名(因此文件无法正确打开) 2) 文件是空的 3) 文件中的第一行是空白的。添加错误检查以确保文件打开。然后打印文件中的每一行:
while(std::getline(inFile, pop1)) { std::cout << "Line: " << pop1 << "\n";}