一道 关于string 程序问题

一道 关于string 程序问题,第1张

#include <iostream>

#include <string> // 把cstring改为string

using namespace std;

string不是标准库的,cin不支持。需要加头文件。

#include<iostream>

#include<cstring>

using namespace std;

class string

{

private:

char str;

public:

string(char s);

~string(){delete str;};

int getlen(){return strlen(str)+1;}

char get(){return str;}

void print();

};

string::string(char s)

{

str=new char[strlen(s)+1];

strcpy(str,s);

cout<<"constructing string"<<endl;

}

void string::print()

{

cout<<"原数组为:"<<str<<endl;

}

class editstring : public string

{

private:

char str;

unsigned int cursor;

public:

editstring(char s);

~editstring(){delete str;};

void setcurright()

{

if(cursor<strlen(str)+1)

cursor++;

cout<<"光标点右移为:"<<cursor<<endl;

};

void setcurleft()

{

if(cursor>0)

cursor--;

cout<<"光标点左移为:"<<cursor<<endl;

};

void insert(char c);

void deletes();

char get(){return str;}

void replace(char c);

void print();

};

editstring::editstring(char s):string(s)

{

str=new char[strlen(s)+1];

strcpy(str,s);

cursor=0;

cout<<"constructing editstring"<<endl;

}

void editstring::insert(char c)

{

cout<<"插入字母:"<<c<<""<<endl<<"目前光标点为"<<cursor<<""<<endl;

int max=strlen(str)+1;

max++;

char temp=new char[max];

strcpy(temp,str);

str=new char[max];

strcpy(str,temp);

unsigned int j;

for(j=cursor;j<max-1;j++)

{

str[j+1]=temp[j];

}

str[cursor]=c;

delete []temp; //delete temp一样吗?

}

void editstring::deletes()

{

cout<<"删除函数被调用。"<<endl<<"目前光标点为"<<cursor<<""<<endl;

int max=strlen(str)+1;

int i=0;

for(i=cursor;i<max;i++)

{

str[i]=str[i+1];

}

i--;

str[i]='\0';

}

void editstring::replace(char c)

{

cout<<"替换函数被调用。"<<endl<<"目前光标点为"<<cursor<<""<<endl;

str[cursor]=c;

}

void editstring::print()

{

cout<<"编辑后的数组为:"<<str<<endl;

}

void main()

{

editstring p("china");

pstring::print();

psetcurright();

psetcurright();

psetcurleft();

pdeletes();

peditstring::print();

pinsert('a');

peditstring::print();

pdeletes();

peditstring::print();

preplace('s');

peditstring::print();

}

测试通过

你发的那个地址的程序漏了一点点东西,另外string名称有冲突。

你用的是vs2005或以上吧?

1, 把我下面修正好的程序放到一个文本文件中,并把文件叫作acpp

2, 打开:开始->程序->Microsoft Visual Studio 2005->Visual Studio Tool->Visual Studio 2005命令提示符

3, 在打开的黑窗中输入cl 文件的路径,比如你的acpp在D盘。就输入cl d:\acpp

4, 在acpp同路径文件夹里面会生成aexe和aobj,这样就可以了。双击aexe运行。

程序:

#include<iostream>

#include<cstring>

#include<stdlibh>

using namespace std;

class mystring

{

private:

char str;

public:

mystring(char s);

~mystring(){delete str;};

int getlen(){return strlen(str)+1;}

char get(){return str;}

void print();

};

mystring::mystring(char s)

{

str=new char[strlen(s)+1];

strcpy(str,s);

cout<<"constructing string"<<endl;

}

void mystring::print()

{

cout<<"原数组为:"<<str<<endl;

}

class editstring : public mystring

{

private:

char str;

unsigned int cursor;

public:

editstring(char s);

~editstring(){delete str;};

void setcurright()

{

if(cursor<strlen(str)+1)

cursor++;

cout<<"光标点右移为:"<<cursor<<endl;

};

void setcurleft()

{

if(cursor>0)

cursor--;

cout<<"光标点左移为:"<<cursor<<endl;

};

void insert(char c);

void deletes();

char get(){return str;}

void replace(char c);

void print();

};

editstring::editstring(char s):mystring(s)

{

str=new char[strlen(s)+1];

strcpy(str,s);

cursor=0;

cout<<"constructing editstring"<<endl;

}

void editstring::insert(char c)

{

cout<<"插入字母:"<<c<<""<<endl<<"目前光标点为"<<cursor<<""<<endl;

int max=strlen(str)+1;

max++;

char temp=new char[max];

strcpy(temp,str);

str=new char[max];

strcpy(str,temp);

unsigned int j;

for(j=cursor;j<max-1;j++)

{

str[j+1]=temp[j];

}

str[cursor]=c;

delete []temp; //delete temp一样吗?

}

void editstring::deletes()

{

cout<<"删除函数被调用。"<<endl<<"目前光标点为"<<cursor<<""<<endl;

int max=strlen(str)+1;

int i=0;

for(i=cursor;i<max;i++)

{

str[i]=str[i+1];

}

i--;

str[i]='\0';

}

void editstring::replace(char c)

{

cout<<"替换函数被调用。"<<endl<<"目前光标点为"<<cursor<<""<<endl;

str[cursor]=c;

}

void editstring::print()

{

cout<<"编辑后的数组为:"<<str<<endl;

}

void main()

{

editstring p("china");

pmystring::print();

psetcurright();

psetcurright();

psetcurleft();

pdeletes();

peditstring::print();

pinsert('a');

peditstring::print();

pdeletes();

peditstring::print();

preplace('s');

peditstring::print();

getchar();

}

“未定义标识符string” 解决方法:

头文件加上

#include <iostream>

using namespace std;

string是标准库的,要加std::string,或使用using namespace

这个方法你可以试一试。希望对你有帮助

string是字符串的意思。string name就是定义一个string类型的name变量,在C++中,字符串可以使用string来声明(需要引入#include <string>)。

import javautilArrayList;

import javautilList;

import javautilregexMatcher;

import javautilregexPattern;

/

@author wsj

@date 2010-9-2, 下午04:37:05

/

public class Deal {

public static void main(String[] args) {

String s="生地30个 丹皮15,旋覆花10枚代赭石15连翘18赤芍20秦艽15郁金15姜黄10陈皮10黄连8水牛角15凌霄花15";//"北柴胡6g,酒黄芩6g,太子参15g,陈皮10g,青蒿10g,地骨皮10g,茯苓12g,麦冬10g,大枣4个,炙甘草6g,炙黄芪10g,丹皮10g,连翘10g,薄荷(后下)5g";

Pattern pattern=Patterncompile("[^,,\\s\\w]+\\d+[^,,\\W[个枚]]");

Matcher matcher=patternmatcher(s);

List<Medicine> list=new ArrayList<Medicine>();

while (matcherfind()) {

listadd(parseOne(matchergroup()));

}

/

输出结果

/

for (Medicine medicine : list) {

Systemoutprintln(medicine);

}

}

public static Medicine parseOne(String s){

char cs[]=stoCharArray();

String name="";//名称

String mount="";//剂量

String unit="";//单位

boolean isName=true;

for (char c : cs) {

if(CharacterisDigit(c)){

mount+=c;

isName=false;

}else {

if(isName){

name+=c;

}else {

unit+=c;

}

}

}

if(""equals(unit))

unit="g";

return new Medicine(name,mount,unit);

}

}

class Medicine{

private String name;//名称

private String mount;//剂量

private String unit;//单位

public Medicine(String name, String mount, String unit) {

thisname = name;

thismount = mount;

thisunit = unit;

}

public String toString(){

return name+","+mount+","+unit;

}

}

//按Ctrl+Z结束程序,程序有一个地方多了分号。

#include <iostream>

#include <string>

using std::cin;

using std::cout;

using std::string;

using std::endl;

int main()

{string word;

while(cin>>word)//这儿多分号

cout<<word<<endl;

return 0;

}

这里还统计了数字字符个数和字母字符个数,并分别存储于shuzi和zimu这两个字节存储单元中。

希望能帮到你。

写一段子程序SKIPLINES,完成输出空行的功能空行的行数在AX寄存器中

[解]:

SKIPLINES PROC NEAR

PUSH CX

PUSH DX

MOV CX,AX

NEXT: MOV AH,2

MOV DL,0AH

INT 21H

MOV AH,2

MOV DL,0DH

INT 21H

LOOP NEXT

POP DX

POP CX

RET

SKIPLINES ENDP

以上就是关于一道 关于string 程序问题全部的内容,包括:一道 关于string 程序问题、编写一个程序,其中有一个简单的串类String包含设置字符串、编写一个程序,有串类STRING,等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9338678.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存