我想计算每个换行符
如果输入如下:
嗨月亮这一天我想要帮助
应该是这样的输出:
1嗨月亮2这一天我想要3帮助
我写这段代码:
int main() {
string str; int c = 0;
cin >> str;
int j = 0;
string t[200];
while (str != ";")
{
t[j] = str;
cin >> str;
}
for (int i = 0; i < j;i++){
cout << c << " " << t[j];
if (t[j] == "\n") c++;
}
system("Pause");
return 0;
}
我想尝试:
int c[100];
cin >> str;
int j = 0;
string t[200];
while (str != ";")
{
string temp;
t[j] = str;
temp = t[j];
if (temp.find("\n"))
c[j] += 1;
cin >> str;
}
for (int i = 0; i < j;i++){
cout << c[i] << " " << t[j];
}
有人能告诉我如何检测字符串输入中的换行符并将其打印出来吗?
答案 0 :(得分:3)
使用std::getline
逐行阅读。加入std::vector
。打印矢量索引(加一)和矢量中的字符串。
答案 1 :(得分:0)
我想首先定义新行是什么。在Windows上,它是两个字符\r\n
的序列,在UNIX上它只是\n
。将新行作为'\ n'处理就足够了,因为你处理文本输入(不是二进制,因为C将处理翻译)。
我建议你将问题分成两个子问题:
我会做这样的事情:
#include <iostream>
#include <cstring>
using namespace std;
char* nextLine(char* input, int* pos) {
char* temp = new char[200];
int lpos = 0; // local pos
while(input[*pos] != '\n') {
temp[lpos++] = input[(*pos)++];
}
temp[*pos] = '\0';
(*pos)++;
return temp;
}
int main() {
char str[] = "hello\nworld!\ntrue";
int pos = 0;
while(pos < strlen(str)){
cout << nextLine(str, &pos) << "\n";
}
return 0;
}
希望有所帮助!