1

我编写了一个程序来从字符串(3 个单词)中提取第三个单词并打印 If string is "God Is One" o/p - One-79-110-101 我想通过使其成为第 n 个单词来使其更通用一个字符串

       #include<iostream.h>
       #include<conio.h>
       #include<stdio.h>
       #include<ctype.h>
       void main ()
       {           
       int i,j,k,x;
       clrscr();
       char a[20];
       cout<<"enter a string";
       gets(a);
       for(i=0;a[i]!='\0';i++)
           {
             if(a[i]==' ')
              {
                for(j=i+1;a[j]!='\0';j++)
                    {
                         if(a[j]==' ')
                            {           
                                    x=j;
                            }
                    }
              }
           }
               for(i=x+1;a[i]!='\0';i++)
                {
                   cout<<a[i];
                }
                for(i=x+1;a[i]!='\0';i++)
                {
                  k =int(a[i]);
                  cout<<"-"<<k;
                }
       getch();
       }
4

2 回答 2

1

首先,在 C 中,使用转换来提取单词可能是最简单scanf%s(尽管使用它,您总是希望指定最大长度,就像%63s您正在读取 64 字节缓冲区一样)。同样,在 C++ 中,使用字符串提取运算符可能是最简单的>>

因此,C++ 中最简单的方法可能是:

std::string word;
for (int i=0; i<N; i++)
    std::cin >> word;

这只是将标准输入中的 N 个单词读入同一个字符串。前 N-1 个单词中的每一个都被您提取的下一个单词简单地覆盖,因此当您完成后,您将第 N单词存储在word.

请注意,还有其他方法可以完成这项工作,其中一些在某些情况下具有优势——但就目前而言,这可能没问题。

于 2013-09-26T14:39:48.603 回答
0

这是可以做到的另一种方式。这个例子包括一些错误处理。

gcc 4.7.3:g++ -Wall -Wextra nth-word.cpp

#include <iostream>
#include <limits>
#include <string>

int main() {
  int n;
  while((std::cout << "Enter a number: ") && !(std::cin >> n)) {
    // Erroneous input. Clear the fail state and flush the input buffer.
    std::cin.clear();
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
  }

  std::string s;
  std::cout << "Enter a string: ";

  // Read n words.
  while ((std::cin >> s) && (0 < --n));

  // Throw away the rest of the stream.
  std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

  // Required output.    
  std::cout << s;
  for (int i = 0; i < s.size(); ++i) {
    std::cout << '-' << static_cast<int>(s[i]);
  }
  std::cout << std::endl;

  // Wait for more input before exiting.
  std::cin.ignore();

  return 0;
}

示例会话。

Enter a number: text
Enter a number: 4
Enter a string: mary had a little lamb
little-108-105-116-116-108-101
于 2013-09-26T16:59:04.857 回答