本文介绍了预处理器:如何操作字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



这不是严格意义上的C ++语言问题。

有没有办法用
$ b $形成一个标识符的字符串b预处理器有一些操作吗?


即用标识符ID来表示我使用#ID。

多数民众赞成好,但如果我想要怎么办?稍微改变它。


就好像我有一个标识符myID,我想生成一个字符串

MYID(或任何其他形式)来自它。

我也有兴趣知道是否可以使用模板完成,

即myID -myID(字符串,使用预处理器)-MYID(使用

模板)。


我对编译时解决方案感兴趣,运行时间很简单。


谢谢

abir basak

解决方案




读取##令牌粘贴操作符。


#define MY(id)my ## id


MY(Word)//生成myWord

MY(Goodness)//生成myGoodness



这是真的,但我有一个标识符myID,而不是id。所以我不能这样做。

澄清这一点,说我有一个枚举

enum MyEnum {

meType1,meType2

};

i希望从中输入几个字符串TYPE1,TYPE2,其中输入

是meType1,meType2而不是其他任何东西(将使用

来完成一些seq预处理器构造来自boost)。

所以说,我想静态应用meType1的一些构造

使用预处理器或使用模板生成TYPE1。


谢谢

abir




你不能,真的。你有两个选择:要么自己写一个小的

解析器(例如忽略除enum'之外的所有东西),并使用

来生成字符串,或者写一个小的

的程序从一些简单的

格式输入生成枚举和字符串。我已经完成了第一次,并没有那么难。

在你的情况下,第二只只有10行GNU

awk。 (标准awk没有toupper功能,所以你也必须实现它。)


-

James Kanze(GABI软件)电子邮件:ja ********* @ gmail.com

Conseils eninformatiqueorientéeobjet/

Beratung in objektorientierter Datenverarbeitung

9placeSémard,78210 St.-Cyr-l''coco,France,+ 33(0)1 30 23 00 34


Hi,
This is not strictly a C++ language question.
Is there any way to form a string from an identifier with the
preprocessor with some operations ?

i.e to say to make a string from an identifier ID i use #ID.
Thats ok, but what if i want to alter it a little.

like if i have an identifier myID , and i want to generate an string
MYID (or any other form) from it.
I am also interested to know if it can be done using template also ,
i.e myID -myID (string, using preprocessor) -MYID (using
template) .

I am interested in a compile time solution, runtime one is trivial.

thanks
abir basak

解决方案

read up on the ## token pasting operator.

#define MY(id) my ## id

MY(Word) // generates myWord
MY(Goodness) // generates myGoodness



read up on the ## token pasting operator.

#define MY(id) my ## id

MY(Word) // generates myWord
MY(Goodness) // generates myGoodness

Thats true, but i have an identifier myID, and not id. So i can''t do
that.
to clarify the point, say i have an enum
enum MyEnum{
meType1,meType2
};
i want to make a few strings from it as TYPE1, TYPE2 , where the input
is meType1, meType2 and NOT anything else (which will be done using
some seq preprocessor constructs from boost) .
So to say, i want to apply some construct statically of meType1 to
generate TYPE1 either using preprocessor or using template.

thanks
abir


You can''t, really. You have two choices: either write a small
parser yourself (e.g. ignoring everything but enum''s), and use
it to generate the strings, or write a small program which
generates both the enum and the strings from some simply
formatted input. I''ve done the first, and it''s not that hard.
And in your case, the second would only be about 10 lines of GNU
awk. (Standard awk doesn''t have a toupper function, so you''d
have to implement that as well.)

--
James Kanze (GABI Software) email:ja*********@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l''école, France, +33 (0)1 30 23 00 34


这篇关于预处理器:如何操作字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-22 22:02