Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从输入文件C++;,用逗号拆分 我是C++初学者。我有一个以下格式的输入文件(它以一个新的空行开始,然后是一堆字符串(例如117b,44b,…,197f,f),由逗号分隔,可能跨越一行,如下所示,然后是两个线程(例如10,15),然后是一些函数调用):_C++ - Fatal编程技术网

从输入文件C++;,用逗号拆分 我是C++初学者。我有一个以下格式的输入文件(它以一个新的空行开始,然后是一堆字符串(例如117b,44b,…,197f,f),由逗号分隔,可能跨越一行,如下所示,然后是两个线程(例如10,15),然后是一些函数调用):

从输入文件C++;,用逗号拆分 我是C++初学者。我有一个以下格式的输入文件(它以一个新的空行开始,然后是一堆字符串(例如117b,44b,…,197f,f),由逗号分隔,可能跨越一行,如下所示,然后是两个线程(例如10,15),然后是一些函数调用):,c++,C++," 117b、44b、19r、9b、6r、f、f、f、41b、21r、f、f、f、f、f、f、75r、f、f、f、96b、92r、f、f、f、101r、f、f、f、146b、133b、126r、f、f、f、145r、f、f、f、f、186b、185r、f、f、f、f、f、197f、f 搜索线程:10 修改线程:15 插入(150)| | |插入(25)| | |插入(163)| |删除(25)| |删除(6)| | |搜索(101)| |搜索(163)| |搜索(6) " 我想读取文件并将117

"

117b、44b、19r、9b、6r、f、f、f、41b、21r、f、f、f、f、f、f、75r、f、f、f、96b、92r、f、f、f、101r、f、f、f、146b、133b、126r、f、f、f、145r、f、f、f、f、186b、185r、f、f、f、f、f、197f、f

搜索线程:10

修改线程:15

插入(150)| | |插入(25)| | |插入(163)| |删除(25)| |删除(6)| | |搜索(101)| |搜索(163)| |搜索(6)

"


我想读取文件并将117b到f的字符串存储在字符串数组(或向量)中,这样数组看起来像这样=[“117b”、“44b”、“19r”、…、“197f”、“f”]。然后我想在一个int变量中存储搜索线程的数量,在另一个int变量中存储修改线程的数量。我尝试使用get line函数从文件中读取并用逗号分割,但是数组中的最后一个元素将不仅仅是“f”,因为它将继续读取,因为最后一个“f”的末尾没有逗号。有什么办法吗

您可以使用对
getline()
的调用以及
std::stringstream
在不再有逗号分隔的标记可读取时停止

#include <iostream>
#include <sstream>
#include <string>
#include <vector>

int main() {
    std::string str = "117b,44b,19r,9b,6r,f,f,f,41b,21r,f,f,f,89r,72b,f,75r,f,f,96b,92r,f,f,101r,f,f,146b,133b,126r,f,f,145r,f,f,186b,185r,f,f,197f,f";
    std::vector<std::string> tokens;

    std::stringstream ss(str);
    std::string token; 
    while (getline(ss, token, ',')) //delimit on comma
        tokens.push_back(token);

    for (std::size_t i = 0; i < vect.size(); i++)
        std::cout << vect[i] << std::endl;
}
#包括
#包括
#包括
#包括
int main(){
std::string str=“117b、44b、19r、9b、6r、f、f、f、41b、21r、f、f、f、89r、72b、f、75r、f、f、f、f、96b、92r、f、f、f、101r、f、f、146b、133b、126r、f、f、145r、f、f、f、186b、185r、f、f、f、f、f、f、f、197f、f”;
std::向量标记;
std::stringstream ss(str);
字符串标记;
while(getline(ss,token,“,”)//用逗号分隔
代币。推回(代币);
对于(std::size_t i=0;istd::Cot Welcome to StackOverflow!请向我们展示您的代码,以便我们提供帮助。虽然我没有预定义的字符串。上面的字符串和其他信息(如搜索和修改线程的数量)都在输入文件中,因此此方法只会在没有逗号后获取剩余的内容,并将其添加到ar的最后一个位置我们不想要ray,因为它需要是“f”,而不是“f搜索线程:10个修改线程:15个insert(150)| | insert(25)| | | insert(163)| | delete(25)| | delete(6)| Search(101)| | | | Search(163)| Search(6)”如果文件总是以那种特定的格式出现,您可以修改上面的代码来完成您想要的任务(一些数字和字符标记由逗号和换行符分隔,搜索线程和换行符分隔,修改线程等。了解文件的实际格式将更容易回答您的问题(您只指定117b、44b…部分)。我已修改了我的帖子,并包含了实际格式(请参见上文)。该文件将与两个引号之间的内容完全相同