我正在尝试迭代字符串的单词.
可以假设该字符串由用空格分隔的单词组成.
请注意,我对C字符串函数或那种字符操作/访问不感兴趣.另外,请在答案中优先考虑优雅而不是效率.
我现在最好的解决方案是:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
string s = "Somewhere down the road";
istringstream iss(s);
do
{
string subs;
iss >> subs;
cout << "Substring: " << subs << endl;
} while (iss);
}
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方式来做到这一点?
我已经告诉别人,编写using namespace std;代码是错误的,我应该用std::cout和std::cin直接代替.
为什么被using namespace std;认为是不好的做法?是低效还是冒着声明模糊变量(与名称std空间中的函数具有相同名称的变量)的风险?它会影响性能吗?
在C++中使用C是不是很糟糕?
很多人告诉我在C++中使用C是不好的,因为它不那么安全,而且需要更多的内存管理.我一直告诉他们,只要你知道你在做什么,你删除你的"新"并释放你的"malloc",那么C不是问题.
我目前正在一个论坛上发表关于std::string与a 的争论char*.有些人说分配一个简单的char*内存块效率更高,只要你解除分配它就没问题了.另一方面,我们有人说这std::string是优越的,因为它没有涉及内存管理,但效率较低.
所以这里的主要问题是:
任何答案将不胜感激!