C++ 保持输出和输入的交替?

C++ 保持输出和输入的交替?,c++,C++,我对编码非常陌生,一直在codeforces.com上练习一些简单的问题。我正在做,但它似乎要求输入(同时)产生输出(同时)。我一次只能得到一个输出 以下是该问题的基本说明: 输入 第一行包含一个整数n(1) ≤ N ≤ 100). 以下n行中的每一行都包含一个单词。所有单词都由小写拉丁字母组成,长度为1到100个字符 输出 打印n行。第i行应包含从输入数据中替换第i个字的结果 例子 输入 四, 话 本地化 国际化 肺炎显微镜下矽肺孢子虫病 输出 话 l10n i18n P43 这是我的密码:

我对编码非常陌生,一直在codeforces.com上练习一些简单的问题。我正在做,但它似乎要求输入(同时)产生输出(同时)。我一次只能得到一个输出

以下是该问题的基本说明:

输入 第一行包含一个整数n(1) ≤ N ≤ 100). 以下n行中的每一行都包含一个单词。所有单词都由小写拉丁字母组成,长度为1到100个字符

输出 打印n行。第i行应包含从输入数据中替换第i个字的结果

例子 输入

四,

本地化

国际化

肺炎显微镜下矽肺孢子虫病

输出

l10n

i18n

P43

这是我的密码:

#include <iostream>
#include <string>

using namespace std;

void wordToNumbers(string word){
    int midLetters = word.length();
    char firstLetter = word.front();
    char lastLetter = word.back();
    cout <<firstLetter <<(midLetters-2) <<lastLetter <<endl;
}

int main(){
    string wordInput;
    string firstNum;

    getline(cin,firstNum);

    int i = stoi(firstNum);

    for(i>=1; i--;){
        getline(cin,wordInput);

        if (wordInput.length() > 10){
            wordToNumbers(wordInput);
        } else {
            cout <<wordInput <<endl;
        }
    }
    return 0;
}
#包括
#包括
使用名称空间std;
无效字编号(字符串字){
int midLetters=单词长度();
char firstLetter=word.front();
char lastLetter=word.back();

Cuth

我也是C++初学者,我的想法是先把每一行保存在一个缓冲区中,然后把所有的东西写入STD::CU.

我使用std::vector作为缓冲区,因为它简单易懂,在许多情况下非常有用。基本上,它是一个更好的数组。您可以阅读更多关于std::vector的内容

#包括
#包括
//用于std::vector容器
#包括
使用名称空间std;
无效字编号(字符串字){
int midLetters=单词长度();
char firstLetter=word.front();
char lastLetter=word.back();

cout逐行读取和打印输出非常好


完全接受您的解决方案:

请您在问题正文中总结一下问题,好吗?链接往往会断开。我想还是可以逐个打印到std::out?
#include <iostream>
#include <string>

//for use of std::vector container
#include <vector>

using namespace std;

void wordToNumbers(string word){
    int midLetters = word.length();
    char firstLetter = word.front();
    char lastLetter = word.back();
    cout <<firstLetter <<(midLetters-2) <<lastLetter <<endl;
}

int main(){
    string wordInput;
    string firstNum;

    //container for buffering all our strings
    vector<string> bufferStrings;

    getline(cin,firstNum);

    int i = stoi(firstNum);

    //read line by line and save every line in our buffer-container
    for(i>=1; i--;){
        getline(cin,wordInput);
        //append the new string to our buffer
        bufferStrings.push_back(wordInput);
    }

    //now iterate through the buffer and write everything to cout
    for(int index = 0; index < bufferStrings.size(); ++index) {
        if (bufferStrings[index].length() > 10){
            wordToNumbers(bufferStrings[index]);
        } else {
            cout <<bufferStrings[index] <<endl;
        }
    }
    return 0;
}