输出句子中的第一个单词

时间:2015-06-21 21:53:07

标签: c++ string

我试图用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;
}

这个解决方案只打印了字符串的第一个字母,我无法确定代码出了什么问题。

1 个答案:

答案 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'检查不会阻止您打印东西。