需要在文本文件C ++中的某些字符之间读取文本

时间:2013-04-07 16:46:00

标签: c++ line symbols

所以我有一个名为Names.txt的文本文件,它有20 000行。 一行的示例如下所示

"niineve","1 Mo.","VT","1 Mo. 10:12"
"nimrod","1 Mo.","VT","1 Mo. 10:8"
"nimrod","1 Mo.","VT","1 Mo. 10:9"
"noa","1 Mo.","VT","1 Mo. 5:29"

仅供参考目前我有一个代码,我可以在其中输入一个名称并查找它在文件中出现的次数。

现在我需要以某种方式让Mo部分输出,我在文件中有大量的音节,如“Ilm。”,“Mo。”,“Sj。”,“Sk”。我需要得到一个必要的输出,但我现在不会太具体。

我的问题:有没有办法从第一个大写字母(包括)开始到第一个句号结束(排除在外)的行中获取字符。

所以如果我在文本文件中的行是

"hiskija","2 Ku.","VT","2 Ku. 20:8" 

然后输出将是Ku,因为K是第一个大写字母,并且在Ku出现一个时期之后。 如果没有,你可以用另一种方式建议我如何从那个地方得到一个音节(2-3个字符),我想也许我可以从符号“,”和之间得到。所以,如果线是

"niineve","1 Mo.","VT","1 Mo. 10:12" 

我得到1 Mo的输出,但我没有任何可以做到的命令的经验。

编辑:这就是我现在所拥有的

ifstream file ("Names.txt");

int i;
for (i = 0; i < book.length(); ++i) {
    if ('A' <= book[i] && book[i] <= 'Z') break;
}

string start = book.substr(i);
getline(file, start, '.');
cout << start;

用它成功地从一行的开头读到第一个句号“。”但我没有设法把起点放在第一个大写字母上。我想我还没有声明我和字符串启动正确。

1 个答案:

答案 0 :(得分:1)

您可以使用getline函数读取特定字符的数据

getline(file,str,delimiter);

将写入字符串'str'中的所有内容,直到找到分隔符(在您的情况下为'。')。

然后你只需要遍历字符串并找到第一个大写字母,比如

int i;
for (i = 0; i < str.length(); ++i) {
    if ('A' <= str[i] && str[i] <= 'Z') break;
} 

变量'i'现在包含起始索引,您现在要做的就是提取相应的变量

str.substr(i) // from 'i' all the way to the end