我知道这很简单,我不记得最好的办法。
我有像" 5 15 "
这样的输入,用于定义2D矢量数组的x和y。
我只需要将这两个数字放入int col
和int row
。
最好的方法是什么?我正在尝试使用stringstreams,但无法弄清楚正确的代码。
感谢您的帮助!
答案 0 :(得分:16)
C++ String Toolkit Library (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;
}
可以找到更多示例Here
注意:此方法比标准库例程大约快2-4倍,并且比基于STL的实现(stringstream,Boost lexical_cast等)快120倍,用于字符串到整数的转换 - 当然取决于编译器。 / p>
答案 1 :(得分: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
}
答案 2 :(得分:2)
以下是stringstream
方式:
int row, col;
istringstream sstr(" 5 15 ");
if (sstr >> row >> col)
// use your valid input
答案 3 :(得分:0)
假设您已经验证输入确实是那种格式,那么
sscanf(str, "%d %d", &col, &row);
答案 4 :(得分:-1)
我个人更喜欢C方式,即使用sscanf()
:
const char* str = " 5 15 ";
int col, row;
sscanf(str, "%d %d", &col, &row); // (should return 2, as two ints were read)