从具有空格的字符串中获取整数的最佳方法?

Bef*_*all 14 c++ string whitespace

我知道这很简单,我不记得最好的办法.我有一个输入" 5 15 ",它定义了2D矢量数组的x和y.我只需要将这两个数字放入int colint row.

最好的方法是什么?我正在尝试使用stringstreams,但无法弄清楚正确的代码.

谢谢你的帮助!

小智 16

C++字符串工具箱库(StrTk)具有以下问题的解决方案:

int main()
{
   std::string input("5 15");
   int col = 0;
   int row = 0;
   if (strtk::parse(input," ",col,row))
      std::cout << col << "," << row << std::endl;
   else
      std::cout << "parse error." << std::endl;
   return 0; 
}
Run Code Online (Sandbox Code Playgroud)

更多例子可以在这里找到

注意:此方法比标准库例程大约快2-4倍,并且比基于STL的实现(stringstream,Boost lexical_cast等)快120倍,用于字符串到整数转换 - 当然取决于编译器使用.


Jam*_*lis 10

你可以使用stringstream:

std::string s = " 5 15 ";
std::stringstream ss(s);

int row, column;
ss >> row >> column;

if (!ss)
{
    // Do error handling because the extraction failed
}
Run Code Online (Sandbox Code Playgroud)

  • 在这种特殊情况下,downvoters有问题,而不是你的代码. (5认同)
  • @wilhelmtell:+1,我同意. (2认同)