在 C++ 中确定 getline() 起点
Posted
技术标签:
【中文标题】在 C++ 中确定 getline() 起点【英文标题】:Determine a getline() starting point in C++ 【发布时间】:2013-04-07 17:52:00 【问题描述】:这是我的代码的一部分
string line;
ifstream file ("Names.txt");
int i;
for (i = 0; i < line.length(); ++i)
if ('A' <= line[i] && line[i] <= 'Z') break;
string start = line.substr(i);
getline(file, start, '.');
cout << start;
我需要从第一个大写字母开始读取一行,直到文本文件中的第一个句点。目前它成功地从文件的开头读取到第一个句点。所以我在确定起点 i(第一个大写字母)时遇到了问题。
感谢您的帮助!
【问题讨论】:
line
未初始化为任何值,因此 i
为 0。
谢谢,我会努力解决的:)
【参考方案1】:
string line; // line is empty
ifstream file ("Names.txt"); // line is still empty
int i; // still empty
for (i = 0; i < line.length(); ++i) // still empty, line.length() == 0
这有帮助吗?您需要从文件中读取到行(使用 getline),然后解析行。
【讨论】:
【参考方案2】:这样的事情应该可以工作:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
string line;
ifstream file ("file.txt");
char temp;
while(file>>temp)
if(isupper(temp)) break;//First capital letter
file.seekg(-1,file.cur);//rewind one char so you can read it in the string
getline(file,line,'.');//read until the first .
cout << line << endl;
system("pause");
return 0;
【讨论】:
比起file.cur
,我更喜欢使用std::ios_base::cur
嗯,谢谢你的回答,我只是用整数和大写字母确定起点,但我会测试你在这里介绍的函数的可能性:) 以上是关于在 C++ 中确定 getline() 起点的主要内容,如果未能解决你的问题,请参考以下文章
C++基础:各种输入方法总结,cincin.get()cin.getline()getline()gets()getchar()