| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1028 人关注过本帖
标题:[求助]这个程序有什么问题.
只看楼主 加入收藏
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
结帖率:41.18%
收藏
已结贴  问题点数:20 回复次数:5 
[求助]这个程序有什么问题.
题目:
    编写一个函数, 它接收一个输入参数, 该参数由两个单词组成, 单词之间使用一个空格分隔,函数通过它的两个输出参数返回每一个单词.所有三个参数都应该为string类型
程序代码:
#include <iostream>
#include <string>
using std::string;
void dividewords(string, string &, string &);

int main(void)
{
   using std::cin;
   using std::cout;
   using std::endl;

   string input_words;
   string word1, word2;

   getline(cin, input_words, '\n');
   dividewords(input_words, word1, word2);
   cout<<word1<<" "<<word2<<endl;

   return 0;
}

void dividewords(string input_words, string & word1, string & word2)
{
   int k;
  

   for(k = 0; input_words.at(k) != ' '; k++)
      word1.insert(input_words.at(k));
   for(; input_words.at(k) != '\0'; k++)
      word2.insert(input_words.at(k));
}
这是我写的代码.在g++的编译下提示错误.
搜索更多相关主题的帖子: 单词 
2015-12-10 21:38
文心边城
Rank: 2
等 级:论坛游民
威 望:2
帖 子:98
专家分:67
注 册:2005-12-13
收藏
得分:0 
具体是什么错误 你应当贴出来!!!

会写c c++ java php JS AS vb python
2015-12-11 02:02
newdos
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:6
帖 子:251
专家分:1169
注 册:2012-8-13
收藏
得分:0 
void dividewords(string input_words, string  &word1, string  &word2)
{
    unsigned int k;

    for(k = 0; input_words.at(k) !=  ' '; k++)
    {
        word1 += input_words.at(k);
    }

    for(k++; k< input_words.size(); k++)
    {
        word2 += input_words.at(k);
    }
}
2015-12-11 14:00
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
收藏
得分:0 
回复 3楼 newdos
我运行了下程序,有段错误提示:
good bad not sod
terminate called after throwing an instance of 'std::out_of_range'
  what():  basic_string::at
[1]    9299 abort      ./a.out

2015-12-13 13:49
newdos
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:6
帖 子:251
专家分:1169
注 册:2012-8-13
收藏
得分:20 
    unsigned int k;

    for(k = 0; k< input_words.size(); k++)
    {
        if(input_words.at(k) == ' ') break;
        word1 += input_words.at(k);
    }

    for(k++; k< input_words.size(); k++)
    {
       if(input_words.at(k) == ' ') break;
        word2 += input_words.at(k);
    }

改成这样就行了,那个错误的意思是at调用越界抛出的异常。如果你想要第二个单词后面的全部内容,可以把第二个循环里的if那行去掉。另个可以用istream字符串流来做,也可以用迭代器来做,等你学到的时候再说吧。

[此贴子已经被作者于2015-12-13 15:27编辑过]

2015-12-13 15:24
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
收藏
得分:0 
回复 5楼 newdos
谢谢.分给你了.
2015-12-13 17:21
快速回复:[求助]这个程序有什么问题.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029710 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved