| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 637 人关注过本帖
标题:一个“字符串和指针相结合”的编程题,请高手赐教!
只看楼主 加入收藏
非己莫属
Rank: 2
来 自:河南信阳
等 级:论坛游民
帖 子:13
专家分:14
注 册:2012-4-28
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:11 
一个“字符串和指针相结合”的编程题,请高手赐教!
   要求:先用一个指针指向这个字符串"zhongyuan  da  jia  ting" 然后写一个程序
使得有一个指针数组,使这个指针数组的指针分别指向"zhongyuan"   "da"   "jia"   "ting",
也就是遇到字符串中的空格后,就将其存到另一个变量中,然后使指针数组中的指针指向变量,
完成后输出格式为  "zhongyuan"   "da"   "jia"   "ting"
希望高手写个完整程序出来,请赐教!
搜索更多相关主题的帖子: jia 编程 字符串 
2012-05-11 17:29
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
收藏
得分:5 
程序代码:
#include<iostream>
#include<sstream>
using namespace std;

int main()
{
    char *p = "zhongyuan  da  jia  ting";
    istringstream in(p);

    char str[5][10];
    int i=0;
    while( in >> str[i++] );

    for(int i=0; i<4; ++i)
        cout << str[i] <<endl;
    return 0;
}

2012-05-11 20:22
tongzhipeng
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:14
专家分:101
注 册:2012-5-1
收藏
得分:0 
while(in>>str[i++])是什么意思?
2012-05-11 23:51
非己莫属
Rank: 2
来 自:河南信阳
等 级:论坛游民
帖 子:13
专家分:14
注 册:2012-4-28
收藏
得分:0 
以下是引用草狼在2012-5-11 20:22:33的发言:

 
#include
#include
using namespace std;
 
int main()
{
    char *p = "zhongyuan  da  jia  ting";
    istringstream in(p);
 
    char str[5][10];
    int i=0;
    while( in >> str[i++] );
 
    for(int i=0; i<4; ++i)
        cout << str[i] <<endl;
return 0;
}
请问一下char str[5][10]; 是什么意思,为什么我把它换成一个一维数组比如str[4],却无法运行呢,请赐教

[ 本帖最后由 非己莫属 于 2012-5-12 11:08 编辑 ]
2012-05-12 09:44
liudw2
Rank: 4
等 级:业余侠客
帖 子:85
专家分:248
注 册:2011-7-31
收藏
得分:0 
while(in>>str[i++])改为while(cin >> str[i++])
2012-05-12 11:02
tongzhipeng
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:14
专家分:101
注 册:2012-5-1
收藏
得分:0 
楼上。。。你想想这里用的到cin吗。。。。。我测试过的可以编译,运行结果无误,就是没见过 in>> 有用法,纠结中。。。
2012-05-12 14:11
海盗许毅
Rank: 2
等 级:论坛游民
帖 子:12
专家分:15
注 册:2012-4-30
收藏
得分:0 
回复 6楼 tongzhipeng
那你见过cin>>的用法吧?
in是istringstream创建的一个对象而已,就和fin是ifstream的对象一样,这个名字可以自己随意起的。
它们的用法几乎和cin相同,就是关联的对象不同而已。
2012-05-12 15:32
非己莫属
Rank: 2
来 自:河南信阳
等 级:论坛游民
帖 子:13
专家分:14
注 册:2012-4-28
收藏
得分:0 
请问一下char str[5][10]; 是什么意思,为什么我把它换成一个一维数组比如str[4],却无法运行呢,请赐教
 
2012-05-13 17:51
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:5 
程序代码:
#include <iostream>
#include <vector>
#include <cstring>
#include <cctype>
using namespace std;
class SplitResult {
public:
    SplitResult(char** a = 0, int c = 0) : array(a), count(c) {}
    ~SplitResult();
    char** getArray() { return array; }
    int    getCount() { return count; }
private:
    char** array;
    int    count;
    friend SplitResult* split(const char*, SplitResult*);
};
SplitResult::~SplitResult()
{
    for (int i = 0; i < count; ++i)
        delete array[i];
    delete array;
}
SplitResult* split(const char*, SplitResult*);
int main()
{
    const char* str = "zhongyuan  da  jia  ting";
    SplitResult sr;
    int i;

    split(str, &sr);
    for (i = 0; i < sr.getCount(); ++i)
        cout << sr.getArray()[i] << " ";
}
SplitResult* split(const char* str, SplitResult* sr)
{
    const char* p = str;
    const char* start;
    char** array;
    char* tmp;
    int length;
    int i;
    vector<char*> v;

    while (*p) {
        if (isalpha(*p)) {
            start = p;
            length = 0;
            while (isalpha(*p))
                ++p, ++length;
            tmp = new char[length + 1];
            tmp[length] = '\0';
            v.push_back(strncpy(tmp, start, length));
        }
        ++p;
    }

    array = new char*[v.size()];
    for (i = 0; i < v.size(); ++i)
        array[i] = v[i];
    sr->array = array;
    sr->count = v.size();

    return sr;
}


[ 本帖最后由 lz1091914999 于 2012-5-14 10:33 编辑 ]

My life is brilliant
2012-05-14 10:30
liudw2
Rank: 4
等 级:业余侠客
帖 子:85
专家分:248
注 册:2011-7-31
收藏
得分:0 
给代码的时候请也标识上注释,谢谢!
2012-05-15 21:15
快速回复:一个“字符串和指针相结合”的编程题,请高手赐教!
数据加载中...
 
   



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

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