我有一个带有# 的文本文件...它看起来像这样。
#Stuff
1
2
3
#MoreStuff
a
b
c
我正在尝试使用 std::string::find() 函数来获取 # 的位置,然后从那里开始,但我不确定如何实际编码。
这是我的尝试:
int pos1=0;
while(i<string.size()){
int next=string.find('#', pos1);
i++;}
很难从您的问题中看出“职位”是什么意思,但看起来您正在尝试做这样的事情:
#include <fstream>
#include <iostream>
int main()
{
std::ifstream incoming{"string-parsing-for-c.txt"};
std::string const hash{"#"};
std::string line;
for (auto line_number = 0U; std::getline(incoming, line); ++line_number)
{
auto const column = line.find(hash);
if (std::string::npos != column)
{
std::cout << hash << " found on line " << line_number
<< " in column " << column << ".\n";
}
}
}
...或者可能是这样的:
#include <fstream>
#include <iostream>
int main()
{
std::ifstream incoming{"string-parsing-for-c.txt"};
char const hash{'#'};
char byte{};
for (auto offset = 0U; incoming.read(&byte, 1); ++offset)
{
if (hash == byte)
{
std::cout << hash << " found at offset " << offset << ".\n";
}
}
}
这是我不久前做的一个......(在C中)
int char_pos(char c, char *str) {
char *pch=strchr(str,c);
return (pch-str)+1;
}
将其移植到 C++,然后就可以了!;)