-1

我有一个带有# 的文本文件...它看起来像这样。

#Stuff
1
2
3
#MoreStuff 
a
b
c

我正在尝试使用 std::string::find() 函数来获取 # 的位置,然后从那里开始,但我不确定如何实际编码。

这是我的尝试:

int pos1=0;
while(i<string.size()){
  int next=string.find('#', pos1);
  i++;}
4

2 回答 2

0

很难从您的问题中看出“职位”是什么意思,但看起来您正在尝试做这样的事情:

#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";
        }
    }
}
于 2013-08-31T02:59:20.270 回答
0

这是我不久前做的一个......(在C中)

int char_pos(char c, char *str) {
    char *pch=strchr(str,c);
    return (pch-str)+1;
}

将其移植到 C++,然后就可以了!;)

  • 如果:未找到,则返回负数。
  • Else : 返回 'Positive',Char 的第一个找到的位置(第一个匹配)
于 2013-08-31T03:15:01.027 回答