gpt4 book ai didi

c++ - 读取未知长度的数字

转载 作者:行者123 更新时间:2023-11-28 03:08:39 25 4
gpt4 key购买 nike

我有一个包含一些坐标模式数据的输入文件例如 (2,3,5) 转换为第 2 列、第 3 行和第 5 级。我很好奇使用 getline(cin,string) 获取数据后读取数字的方法。我不知道数据点中有多少位数字,所以我不能假设第一个字符的长度为 1。是否有任何库可以帮助更快地解决问题?

到目前为止我的游戏计划还没有完成

void findNum(string *s){
int i;
int beginning =0;
bool foundBegin=0;
int end=0;
bool foundEnd=0
while(*s){
if(isNum(s)){//function that returns true if its a digit
if(!foundBegin){
foundBegin=1;
beginning=i;
}

}
if(foundBegin==1){
end=i;
foundBegin=0;
}
i++;
}
}

最佳答案

试试这个:

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

int main() {
std::vector <std::string> params;

std::string str;
std::cout << "Enter the parameter string: " << std::endl;
std::getline(cin, str);//use getline instead of cin here because you want to capture all the input which may or may not be whitespace delimited.

std::istringstream iss(str);

std::string temp;
while (std::getline(iss, temp, ',')) {
params.push_back(temp);
}

for (std::vector<std::string>::const_iterator it=params.begin(); it != params.end(); ++it) {
std::cout << *it << std::endl;
}

return 0;
}

唯一需要注意的是参数必须是非空格分隔的。

示例输入字符串:

1,2,3

输出:

1
2
3

一旦这些参数被解析,您就可以通过以下方式将它们从字符串转换为(示例)整数:

template <typename T>
T convertToType(const std::string &stringType) {
std::stringstream iss(stringType);
T rtn;
return iss >> rtn ? rtn : 0;
}

可以按如下方式使用:

int result = convertToType<int>("1");//which will assign result to a value of 1.

更新:

这现在可以正确处理以空格分隔的输入(换行符除外),如下所示:

1 , 2, 3 ,  4

产生:

1
2
3
4

关于c++ - 读取未知长度的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19062170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com