【发布时间】:2013-01-15 00:38:12
【问题描述】:
我有一个字符串:14332x+32x=10
我想拆分它,使其看起来像:[14332][+32][10]
到目前为止,我已经尝试过
char c;
std::stringstream ss(equation1);
while (ss >> c) {
std::cout << c << std::endl;
}
但是在测试了打印的内容之后,我认为不可能从该信息中进行操作。我知道我需要在 x 和 = 上拆分字符串,但我不确定这是否可行以及是否可行。我用谷歌搜索了它,没有发现任何看起来有帮助的东西,但我也是 C++ 新手,答案可能就在我面前。
我不想使用boost。任何建议都会有所帮助!
【问题讨论】:
-
我在你最后一个问题中的链接包含了这个问题的答案。
-
我认为您应该使用
std::string类的功能。请参阅reference 并浏览成员。您应该能够根据.find()的字符提出一种快速提取子字符串的方法。 -
...如果你真的喜欢那些
stringstreams,只需使用数字类型,然后使用istream::peek和istream::ignore,直到你达到下一个数字。不过,其他方法 (boost/string::find) 可能会为您提供更强大的解决方案。 -
我看了看,并尝试使用以下代码:std::istringstream iss(equation1);复制(std::istream_iterator<:string>(iss), std::istream_iterator<:string>(), std::ostream_iterator<:string>(std::cout, "x")) ;它只是打印出原始字符串(12344x+3x=10),但末尾有一个 x