我正在尝试迭代字符串的单词.
可以假设该字符串由用空格分隔的单词组成.
请注意,我对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)
有没有更优雅的方式来做到这一点?
在C++中通常用某种前缀命名成员变量来表示它们是成员变量而不是局部变量或参数.如果你来自MFC背景,你可能会使用m_foo.我myFoo偶尔也见过.
C#(或者可能只是.NET)似乎建议只使用下划线,如_foo.这是否允许C++标准?
我在我的代码中发布了一个问题,其唯一的#include指令如下:
#include <bits/stdc++.h>
Run Code Online (Sandbox Code Playgroud)
我的老师告诉我这样做,但在评论部分,我被告知我不应该这样做.
为什么?
c++ portability c++-faq turbo-c++ implementation-defined-behavior
这个问题在获得解决方案方面并不难,但我想知道是否有任何 C++ 函数或算法可以解决它。
我在研究这个问题时想到了这个想法Count character chances in a string in C++
所以想知道除了从头开始编写一个函数来检查字符串中某个字符是否出现特定次数之外,我们是否还有其他选择。例如让我们说:
std::string s = "a_b_c_d_e_f_g_h_i_j_k_l_m";
Run Code Online (Sandbox Code Playgroud)
并且我们想查找 string 中是否至少有 2 个 '_'。如果我们使用std::count它将返回所有“_”的计数。std::count_if也会以类似的方式行事。我可以编写一个代码来循环遍历字符串并在计数达到 2 时立即中断,但我想知道我们是否在 C++ 算法或函数中有一些现有的解决方案。
这里的思考过程是,如果我们得到一个很长的字符串作为输入,并且做某事的标准是基于某个特定字符是否至少出现n次,那么遍历整个字符串是一种浪费。