c – 如何将整数字符串转换为一个充满int的向量?

c – 如何将整数字符串转换为一个充满int的向量?,第1张

概述我知道有关同样事情的其他问题,但是,我已经用其他资源来提出我现在所拥有的东西,并且我得到了一个我似乎无法弄清楚的错误.另外,请记住我是初学者.话虽这么说,我有一个非常大的字符串填充整数格式如下: newString =“12 -34 50 2 -102 13 78 9”(实际的字符串要大得多).然后我尝试使用transform()创建一个函数,将字符串转换为int的向量: int convertS 我知道有关同样事情的其他问题,但是,我已经用其他资源来提出我现在所拥有的东西,并且我得到了一个我似乎无法弄清楚的错误.另外,请记住我是初学者.话虽这么说,我有一个非常大的字符串填充整数格式如下:
newString =“12 -34 50 2 -102 13 78 9”(实际的字符串要大得多).然后我尝试使用transform()创建一个函数,将字符串转换为int的向量:

int convertString(){    istringstream is(newString);    vector<int> intVector;    transform(istream_iterator<string>( is ),istream_iterator<string>(),back_inserter( intVector ),[]( const string &newString ){ return ( stoi( newString ) ); } );//This is the line indicated in the error!    for(int x : intVector )        cout << x << ' '<<endl;    return 0;    }

我得到的错误是在指示的错误行处有一个预期的表达式…
任何想法如何解决这一问题?

在此先感谢您,如果有什么不清楚的话请告诉我!

解决方法 假设您已经合理地确定输入只包含格式正确的整数,(或者只有在遇到除可读整数之外的东西时才会停止读取),这里不需要转换 – istream_iterator本身可以完美地处理转换好.您可以直接从迭代器初始化向量,给出如下代码:

std::istringstream is(newString);std::vector<int> intVector { std::istream_iterator<int>(is),std::istream_iterator<int>()};

这在一个方面与你的版本不同:如果你给stoi一个字符串它不能转换为一个整数,它会抛出一个异常 – 如果它包含像ac这样的东西的invalID_argument;根本无法转换为整数,或out_of_range,如果它包含50位数字,则会产生不适合目标类型的结果.

总结

以上是内存溢出为你收集整理的c – 如何将整数字符串转换为一个充满int的向量?全部内容,希望文章能够帮你解决c – 如何将整数字符串转换为一个充满int的向量?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1216458.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存