首页 > 解决方案 > 为什么执行时会跳过前 2 个字符?C++

问题描述

while(!Info.eof()) {
    std::getline(Info, line,'\r');

    char a[line.length()];
    char things[]= ":.\n\0";

    for(int i=0;i<sizeof(a); i++) {
       a[i]= line[i];
    }


    ptr = strtok(a, things);
    ptr = strtok(nullptr,things);


   while (ptr!= nullptr) {
        ptr = strtok(nullptr,things);
        std::cout << ptr << std::endl;
   }

Info 是ifstream输入文件。线是一个字符串。当我cout << line显示一切都没有问题时,问题是我需要带走除了所需的字符串和 int 之外的所有东西,我已经完成了但前两行没有显示。当我第一次执行它时,它显示了所有内容,昨天它跳过了第一行,今天跳过了前两行。我想这与记忆或看不见的东西有关,我需要帮助,谢谢。

标签: c++arraysmemorycharstrtok

解决方案


你缺少的一件事——C 风格的字符串以零结尾。你不这样做。

其次,您在 while 循环之前做了两次 strtoks,这就是为什么您会丢失一些东西。


推荐阅读