我试图用C ++打印每个单词的第一个字母。我的想法是首先打印字符串的第一个字母,然后在空格后打印每个字母:
#include <string.h>
#include <stdio.h>
#include <iostream>
using namespace std;
string sentence;
int main(int argc, char const *argv[])
{
cout << "Input your name!" << endl;
cin >> sentence;
//output first character
cout << sentence[0] << endl;
//output the rest of first characters in words
for(int i = 0; i < sentence.length(); i++){
if (sentence[i] == ' ' && sentence[i+1]!= '\0'){
cout << sentence[i+1]<< endl;
}
}
return 0;
}
这个解决方案只打印了字符串的第一个字母,我无法确定代码出了什么问题。
答案 0 :(得分:3)
model tiny
.code
org 0100h
start:
mov dx, offset tm
mov ah, 0ah
int 21h
mov dx, offset crlf
mov ah, 09h
int 21h
mov dx, offset testm
mov ah, 09h
int 21h
mov dx, offset tm + 2
xor ch, ch
mov cl, tm + 1 ; Length of tm = number of bytes to write
mov ah, 40h
mov bx, 1 ; Handle 1: StdOut
int 21h ; BX, CX & DX not changed
mov ah, 40h ; Once more.
mov bx, 1
int 21h
ret
tm db 255,255,255 dup("$")
testm db "Entered string: $"
crlf db 0Dh, 0Ah, "$"
End start
将在第一个空格后停止读取字符串。因此,如果您输入std::cin
,则只会在您的字符串中读取hello world
。相反,您可以使用"hello"
:
std::getline
此外,cout << "Input your name!" << endl;
getline(cin, sentence);
...
的内容在您使用的任何方法中都不会包含空字符(std::string
),因此您的'\0'
检查不会阻止您打印东西。