我的程序有问题,应该计算用户发送到流的字符串中的每个符号。它计算辅音,元音,'ff','fl','fi'和'\ t','\ n'和''。问题是程序工作得很好,但仍然不计算空格,制表符和新行。我试过使用noskipws操纵器,但它不读取任何东西直到第一个单词。
这是:
Component emptySpace = Box.createRigidArea( ... );
panel.add( emptySpace );
答案 0 :(得分:1)
int tabCount = 0, spaceCount = 0, newlineCount = -1;
while(std::getline(std::cin, line)){ //getline reads in a line to a string tokenized by \d by default
newlineCount++; //every time there's a new loop, theres a new newline.
for(auto c : line) {
if(c == '\t')
tabCount++;
else if(c == ' ')
spaceCount++;
}
}
您可以使用此基本格式从std :: cin或任何其他输入流逐行读取字符串。 std :: getline会自动通过' \ n'进行标记。所以你可以从-1开始你的换行计数(假设你得到至少一行)并循环你的字符串并计算你想要的任何字符。
答案 1 :(得分:-2)
使用gets()或在现代c ++编译器中使用gets_s()
#include "iostream"
using namespace std;
int main() {
char x[20];
gets_s(x);
for (int i = 0; i < 20; i++) {
if (x[i] == ' ') {
cout << i;
}
}
system("pause");
return 0;
}