मैं विजुअल स्टूडियो कंसोल में एंटर का उपयोग करके लूप के लिए तोड़ने का एक तरीका ढूंढ रहा हूं।

do
{
    std::cin >> userInput;
    if (userInput == '\n')
        break;
    lineStorage[lineLength] = userInput;
    lineLength++;
}while(true);

मेरे पास अब तक यही है, लेकिन न्यूलाइन कैरेक्टर उस चीज़ के लिए काम नहीं करेगा जो मुझे चाहिए, कोई सुझाव या अंतर्दृष्टि मदद करेगी, धन्यवाद!

पी.एस. मैं एंटर बटन के परिणामस्वरूप न्यूलाइन कैरेक्टर के अलावा किसी सेंटीनेल वैल्यू का उपयोग नहीं कर सकता।

पी.एस. अधिक संदर्भ:

char lineStorage[80] = { 'a' };
char userInput = ' ';
const char lineEnd = '\n';

int lineLength = 0;

std::cout << "Enter a line:";

do
{
    std::cin >> userInput;
    if (userInput == '\n')
        break;
    lineStorage[lineLength] = userInput;
    lineLength++;
} while (true);
c++
3
treeTallAsian 3 नवम्बर 2020, 13:53

3 जवाब

सबसे बढ़िया उत्तर

>> के साथ पढ़ना डिफ़ॉल्ट रूप से व्हाइटस्पेस छोड़ देता है, और एक नई लाइन व्हाइटस्पेस है। मैं इसके बजाय getline() का उपयोग करने का सुझाव देता हूं:

for(int i = 0; i < 80; i++) {
    if (!getline(std::cin, userInput) || userInput.empty())
        break;
    lineStorage[lineLength] = userInput;
    lineLength++;
}

यदि आपका lineStorage वास्तव में अलग-अलग शब्दों को संग्रहीत करने वाला है, तो आप शब्दों को संग्रहीत करने से पहले userInput को रिक्त स्थान पर विभाजित कर सकते हैं।


संपादित करें: अब जब आपने दिखाया है कि userInput एक एकल वर्ण है, तो मुझे लगता है कि आपको केवल std::cin.get(userInput) एक बार में एक अक्षर पढ़ने के लिए। इससे आपको अपने मूल कोड की शैली में न्यूलाइन मिल जाएगी।

3
John Zwinck 3 नवम्बर 2020, 14:04

अधिक स्पष्ट होगा

#include <stdio.h>
#include <stddef.h>

int main(int argc , char *argv[])
{
    char t[70]={0},x;
    while(1)
    {
        scanf("%[^ ^\n]%c",t ,&x);
        if(x == '\n') break;
    }
}
0
Алексей Неудачин 3 नवम्बर 2020, 16:11

मुझे दूसरा जवाब बेहतर लगता है, लेकिन ऐसा कुछ भी काम कर सकता है:

do {
  cin.get(userInput);
  if (userInput == 10) {
    break;
  } else { 
    lineStorage[lineLength] = userInput;
    lineLength++;
  }
} while (true);
1
ocrdu 3 नवम्बर 2020, 14:10