C++ 遍历文件失败
我想遍历一个文件并打印所有字符串。例如,该文件包含:C++ 遍历文件失败,c++,C++,我想遍历一个文件并打印所有字符串。例如,该文件包含: a 1 2 10 a1 1 b 将输出: a a1 b 我这样编写代码: int main(){ ifstream stream; stream.open("example.txt"); string temp; while (getline(stream, temp)){ cout<<temp<<endl; int n; while(stream>>n){}
a
1
2
10
a1
1
b
将输出:
a
a1
b
我这样编写代码:
int main(){
ifstream stream;
stream.open("example.txt");
string temp;
while (getline(stream, temp)){
cout<<temp<<endl;
int n;
while(stream>>n){}
}
}
intmain(){
ifstream;
stream.open(“example.txt”);
字符串温度;
while(getline(流、温度)){
这个怎么样
std::copy_if(std::istream_iterator<string>(stream), std::istream_iterator<string>(),
std::ostream_iterator<string>(std::cout),
[](std::string const& rhs) { return !std::isdigit(rhs[0]); })
std::copy_if(std::istream_迭代器(流),std::istream_迭代器(),
std::ostream_迭代器(std::cout),
[](std::string const&rhs){return!std::isdigit(rhs[0]);}
如果字符串不是空的,并且以字母开头,对吗
if (temp.size() > 0 && isalpha(temp[0]))
{
cout << temp;
}
if(temp.size()>0&&isalpha(temp[0]))
{
cout发生的情况如下:一旦你的程序点击这一行
while(stream>>n){}
它尝试以int
egers的形式从文件中读取以下标记。1
成功。
2
成功。
10
成功。
a1
失败
stream
现在处于失败状态(stream.fail()==true
)
while (getline(stream, temp)){
这将读取下一个标记(a1
),但由于流
处于失败状态,getline
的结果将被解释为false
,循环将被中断
这就是你的程序过早结束的原因。但是,它甚至不应该打印a1
。实际上,它只在我的机器上打印a
在吃掉循环中的整数标记后,需要清除失败状态。在末尾添加以下语句:
stream.clear();
这将重置失败状态(stream.fail()==false
),外部循环将继续运行。当(stream>>n){
@ildjarn我用它来迭代所有integery很好地提出的问题。我是编程新手。我认为我不允许使用类似的东西。到目前为止,我只知道getline用于读取字符串,stream>>n用于读取int@JessicaHerlian如果你使用cppreference.com来解决这个问题,那么你会学到很多比你的教授教你的还多!@JessicaHerlian很乐意解释任何你不能理解的事情。好吧。我会搜索那个网站。顺便说一句,教授?我还在十年级,我还是叫他老师:D@JessicaHerlian我们已经有很多大学生在这里复制和粘贴他们的练习;很高兴看到有人比我们年轻++.这是一种很棒的语言,它非常灵活,但也非常有表现力。